phase a/fix playwright webserver#48
Conversation
aksOps
commented
Apr 17, 2026
- chore(baseline): scaffold baseline dirs and gitignore
- chore(baseline): add seed-repo fetch script with pinned commits
- chore(baseline): add Maven verify + JaCoCo capture script
- chore(baseline): add flaky-test scan (N repeated runs)
- chore(baseline): add SpotBugs baseline capture
- chore(baseline): add dependency-tree + license snapshot capture
- chore(baseline): add frontend audit (npm audit + Vite + Playwright)
- chore(baseline): add index/enrich/serve-smoke pipeline capture
- chore(baseline): run pipeline on realworld-express
- chore(baseline): add OWASP dependency-check baseline capture (NVD sync needs retry)
- chore(baseline): add consolidator and publish first BASELINE.md
- fix(e2e): wire playwright webServer to boot live code-iq backend
- docs(baseline): capture real Playwright chromium pass rate (33/131)
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 14 minutes and 30 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Adds a webServer block to src/main/frontend/playwright.config.ts so
npm run test:e2e boots a real code-iq serve against the
spring-petclinic fixture before any spec runs, removing the root cause
of the 0-pass / 575-fail Playwright audit result.
Design choices:
- /api/stats is the readiness probe, not /actuator/health (today
returns 503 OUT_OF_SERVICE; tracked separately on
phase-a/fix-graph-health).
- bash -c "exec java ..." so Playwright can signal the JVM cleanly on
teardown, and so the *-cli.jar glob expands.
- Overridable via BASE_URL (skip webServer entirely), E2E_FIXTURE (pick
a different pre-enriched repo), E2E_PORT (avoid port conflicts).
- baseURL unchanged for spec code — still http://localhost:8080 by
default, overridable via BASE_URL.
Verified on this machine:
- webServer boots the backend; /api/stats returns 200 within 120s.
- Playwright connects to the backend.
Remaining system-level blocker (not a config issue):
chromium headless shell is missing 8 shared libraries on this host
(libatk-1.0, libXcomposite, libgbm, libatspi, ...). Fix once per host:
sudo npx playwright install-deps chromium
Once that's run, npm run test:e2e exercises the full 131-test
chromium suite against a real backend. The original baseline
0p/575f number was the sum across 7 Playwright projects.
Documented in BASELINE.md.
With the webServer wiring in place + system deps installed via
`sudo npx playwright install-deps chromium`, ran the full chromium
project (19.2 min wall time). Results:
33 passed / 94 failed / 4 skipped
Huge jump from the "0 passed / 575 failed" baseline — the 575 was the
sum across 7 Playwright projects (4 browsers × many responsive
breakpoints), and all of it was caused by not having a backend. With
a live backend against the spring-petclinic fixture, a third of the
chromium suite passes.
The remaining 94 failures are NOT environmental; they're genuine test
↔ UI divergence:
- expect(locator).toBeVisible / element(s) not found — selectors
targeting UI elements that don't render in the current build
(component/CSS-class renames).
- strict mode violations on `getByText(/0/)` — tests assume unique
stat values; spring-petclinic's 691-node graph produces many
zero-valued cards, so the match resolves to 8+ elements.
- toHaveLength mismatches — expected N list items, got different count.
- "Button has no aria-label" in accessibility.spec.ts — real a11y
regressions, not a test bug.
- 30s timeouts on locator.focus / locator.boundingBox — elements
that never appear.
Treating the chromium 33/94/4 split as the honest Phase A baseline.
Test-suite maintenance (update selectors to match current UI, or
generate a deterministic fixture) is scoped out of Phase A.
7bf236d to
afbaa42
Compare
|
…ructured/sql taxonomy (#47) Group language/format detectors under semantic parent packages: - jvm/ -> java, kotlin, scala - markup/ -> docs (renamed) - systems/ -> rust, cpp - script/ -> shell - structured/ -> config (renamed) - sql/ -> placeholder (follow-up #48) Imports only; zero behavior change. All 3278 tests still green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ructured/sql taxonomy (#47) (#56) Group language/format detectors under semantic parent packages: - jvm/ -> java, kotlin, scala - markup/ -> docs (renamed) - systems/ -> rust, cpp - script/ -> shell - structured/ -> config (renamed) - sql/ -> placeholder (follow-up #48) Imports only; zero behavior change. All 3278 tests still green. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a SqlMigrationDetector under detector/sql that extracts schema-level entities (tables, views, schemas) from raw SQL DDL and framework-specific migration files: Flyway (V*__*.sql), Liquibase (XML + YAML), Alembic (versions/*.py with alembic/op marker guard), Rails (db/migrate/*.rb), and Prisma (migrations/*/migration.sql). Path/marker discriminators prevent false positives on arbitrary .py/.rb/.xml/.yml. Enum additions: - NodeKind.SQL_ENTITY (new): schema-level table/view/schema node, distinct from the code-level ENTITY (JPA/ORM) kind. - EdgeKind.REFERENCES_TABLE (new): any node (JPA ENTITY, ORM model, raw SQL_ENTITY) -> SQL_ENTITY, pairing with existing ORM detectors. - EdgeKind.MIGRATES (reused): MIGRATION -> SQL_ENTITY. Unused in production code elsewhere; only referenced by ModelCoverageTest. LayerClassifier: SQL_ENTITY classified as `infra`. Deterministic output (sorted by id on emit); detector is stateless. ALTER TABLE ADD COLUMN enriches the owning entity via columns_added property; did not model columns as child nodes to keep graph size reasonable. DROP TABLE is skipped with a debug log. Tests: 16 new tests covering positive paths (raw SQL, Flyway, Alembic, Liquibase XML, Liquibase YAML, Rails, Prisma), negative paths (plain .py/.yaml, Alembic path without marker), determinism, and DDL variants (DROP, CREATE INDEX, ALTER TABLE). Test count 3278 -> 3294. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>


